perm filename OO6.FAI[CMS,LCS] blob sn#171827 filedate 1975-08-08 generic text, type C, neo UTF8
COMMENT ⊗   VALID 00009 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00002 00002		TITLE OO
C00004 00003	LOOP:	PUSHJ P,INTY
C00005 00004	EVAL:	HRRZI MA,1
C00009 00005	BACK:	HRRZI 6,-2(CX)
C00012 00006	GETO:	SKIPN OU
C00014 00007	INTRU:	MOVE EN,JOBCNI
C00018 00008	SAVIT:	HRRZM 6,FIXFLG
C00020 00009	TABL:	REPEAT 15,{JFCL↔}
C00023 ENDMK
C⊗;
	TITLE OO
	EXTERNAL JOBAPR,JOBTPC,JOBCNI,JOBFF,JOBREL,JOBDDT,$I
	FL←4 ↔ EN←7 ↔ TS←10 ↔ OU←11 ↔ CX←13
	MA←14 ↔ N←15 ↔ P←17 ↔ MEM←17000
INT:	HRRZI EN,INTRU
	HRRZM EN,JOBAPR
FILIN:	HRRZI EN,MEM+200
	CORE EN,
	HALT
	OPEN DEVN
	JRST ERRO
	MOVE 6,PPN
	MOVEM 6,IFNAM+3
	LOOKUP IFNAM
	JRST ERRO
	MOVE EN,INPO
	SETZ TS,
	INPUT EN
	HRRZ EN,MEM
	HRRZI N,MEM(EN)
	HRRM N,INTY
	SOS INTY
	CORE N,
	JRST ERRO
	SUBI EN,200
	JUMPLE EN,RST
	IORI EN,177
	MOVNS EN
	HRLZI EN,-1(EN)
	HRRI EN,MEM+177
	INPUT EN
	JRST RST
ERRO:	OUTSTR QMARK
	JRST RST
FILO:	MOVE 6,TMP
	MOVEM 6,(N)
	AOJ N,
	SUBI N,MEM
	HRRZM N,MEM
	IORI N,177
	MOVNS N
	HRLZI N,-1(N)
	HRRI N,MEM-1
	OPEN DEVN
	JRST ERRO
	SETZM OFNAM+3
	ENTER OFNAM
	JRST ERRO
	SETZ 16,
	OUTPUT N
	RELEAS
RST:	RESET
	SETZM PTNUM
	MOVE P,PDPO
	MOVE EN,IPC
	INTENB EN,
	OUTSTR CRLF
	HRRZ N,INTY
	MOVE OU,(N)
	MOVEM OU,TMP
	TLNN OU,777777
	SKIPA OU,(OU)
	ADD OU,ONEB
	HRRZI TS,(N)
	PUSHJ P,GETO
LOOP:	PUSHJ P,INTY
	PUSHJ P,EVAL
	PUSHJ P,GETO
	JRST LOOP

INTY:	HRRZI N,MEM+1
	HRRZI TS,(N)
	SKIPN PTOFL
	OUTSTR ASTR
	IWAIT
	INCHRS EN
	JRST .-2
INLIN:	HRRZM EN,(TS)
	SETZM 1(TS)
	ADDI TS,2
	INCHRS EN
	CAIA
	JRST INLIN
	SKIPL OU,LITFLG
	JRST (OU)
	POPJ P,

LITCK:	CAME EN,LITCHR
	JRST INTY+3
	SETOM LITFLG
	POPJ P,

STLIT:	SKIPL FIXFLG
	POPJ P,
	IWAIT
	INCHRS LITCHR
	JRST .-2
	SUBI TS,2
	HRRZI 6,LITCK
	HRRZM 6,LITFLG
	HRRZI 6,POPS
	HRRZM 6,FIXFLG
	SUB P,TWOB
	PUSH P,RETRN
	JRST INTY+4
EVAL:	HRRZI MA,1
	HRRZI CX,(N)
	JRST BGIN
MVM:	HRLI OU,400000(MA)
	HRRZI 6,2
	JRST LMVM
LAEQ:	HRRZI 6,2
	CAIE OU,(MA)
	ADDI 6,2
	SUBI 5,2
	HLL OU,(5)
LMVM:	MOVEM OU,(5)
	SETZM 1(5)
	ADDI 5,2
	SUBI TS,(6)
	ADDI 6,(5)
	HRLZI 6,(6)
	HRRI 6,(5)
	BLT 6,(TS)
	JRST LKMO
FDEQ:	MOVE 4,MEM(MA)
	HRRZI 5,(N)
LKMO:	CAMN 4,(5)
	JRST EQU
ADIN:	ADDI 5,2
	CAIGE 5,(TS)
	JRST LKMO
	ADDI MA,2
BGIN:	CAIGE MA,-MEM(N)
	JRST FDEQ
	HRRZI MA,-MEM(CX)
	ADDI N,2
	CAIGE N,(TS)
	JRST FDEQ
	JRST BACK
EXCT:	HLRZ 6,6
	XCT TABL(6)
	JRST CKEX1+2
EQU:	HRRZI OU,(MA)
	CAILE TS,2(5)
	CAIG N,MEM+2(MA)
	JRST CKLA
	MOVE 6,MEM+2(MA)
	CAMN 6,2(5)
	HRRI OU,2(MA)
CKLA:	CAIL 5,2(N)
	SKIPL 6,-2(5)
	JRST .+3
	CAIN MA,2(6)
	JRST LAEQ
	CAIE OU,(MA)
	JRST MVM
	SKIPL 1(5)
	SKIPN 6,MEM+1(OU)
	JRST ADIN
CKEX1:	TRNN 6,777777
	JRST EXCT
	HRLI OU,400001(OU)
	AOJ OU,
	MOVEM OU,1(5)
DOUT:	CAIGE CX,-2(TS)
	JRST ADIN
BACK:	HRRZI 6,-2(CX)
	ADDI 6,2
	SKIPGE 1(6)
	JRST NEGA+1
	SKIPGE OU,(6)
	AOBJN OU,NEGA
	HRRZI OU,-MEM(6)
	HRLI OU,400000(OU)
NEGA:	MOVEM OU,1(6)
	CAIGE 6,-2(TS)
	JRST BACK+1
	CAIE TS,2(CX)
	JRST NOT1

	SUBI TS,2
	MOVE EN,(TS)
	SUB OU,ONEB
	CAME OU,EN
	CAIN CX,MEM(OU)
	AOBJN OU,NEW1
	SKIPL FL,FIXFLG
	AOBJN OU,FIXIT
	HRRZI EN,MEM+1(OU)
	ADD OU,ONEB
CKSAV:	SKIPN SAVFLG
	POPJ P,
	HRRM TS,INTY
	MOVEM EN,TMP
	POPJ P,
NEW1:	SKIPGE FL,FIXFLG
	JRST CKSAV
	HRRZI OU,-MEM+1(CX)
	HRLI OU,400000(OU)
	JRST ADTS
NOT1:	HRRZI EN,-MEM-2(TS)
	HRLI EN,400000-MEM(CX)
	MOVE OU,EN
	ADD OU,ONEB
	SKIPGE FL,FIXFLG
	JRST CKSAV
	MOVEM EN,(TS)
	MOVEM OU,1(TS)
	HRRZI OU,-MEM+1(TS)
	HRLI OU,400000(OU)
ADTS:	ADDI TS,2
FIXIT:	SKIPL EN,TMP
	JRST CKFLS
	MOVEM EN,(TS)
	HRRZI EN,1(TS)
	ADDI TS,2
CKFLS:	PUSHJ P,(FL)
	SETOM FIXFLG
	JRST CKSAV
GETO:	SKIPN OU
	POPJ P,
	HRRZI MA,(TS)
	HRLI MA,700
	SKIPE PTOFL
	HRLI MA,1100
	ADDI TS,200
	TLZN OU,400000
	TRNN OU,400000
	JRST GOUT
	MOVE EN,OU
	HRRZI 4,777775
	JRST MKOUT
PUDO:	HRLI OU,(4)
	PUSH TS,OU
	MOVE OU,EN
GOUT:	HLRZ 4,OU
MOR:	MOVE EN,MEM(4)
	TLZE EN,400000
	JRST PUDO
	TRNN EN,400000
	JRST DPCH
MKOUT:	HLRZ 6,EN
	HRLI EN,(EN)
	TRZ EN,400000
	MOVEM EN,MEM(6)
	CAIA
DPCH:	IDPB EN,MA
ADO:	ADDI 4,2
	CAIG 4,(OU)
	JRST MOR
	TLNN TS,777777
	JRST TYOUT
	POP TS,OU
	HLRZ 4,OU
	JRST ADO
TYOUT:	HRRZI EN,15
	IDPB EN,MA
	HRRZI EN,12
	IDPB EN,MA
	SETZ EN,
	IDPB EN,MA
	SUBI TS,177
	SKIPE PTOFL
	JRST PTOUT
	OUTSTR SPACE
	OUTSTR (TS)
	POPJ P,
INTRU:	MOVE EN,JOBCNI
	TLNE EN,20000
	DISMIS
	IMSKCL 1,EN
	MOVE OU,JOBTPC
	TRNE EN,20000
	JRST CORUP
	HRRZI 5,(OU)
	CAIE 5,.+7
	MOVEM OU,IPC+1
	UWAIT
	DEBREAK
	HRRZ 1,PTNUM
POLO:	PTOCNT 1
	SKIPG 2
	INTJEN IPC
	HRRZI 2,PTNUM+2
	PTRDS 1
	OUTSTR (2)
	JRST POLO
CORUP:	SOJ OU,
	MOVEM OU,IPC+1
	UWAIT
	DEBREAK
	HRRZ 1,JOBREL
	AOJ 1,
	CORE 1,
	JRST TABL+77
	INTJEN IPC

PTBEG:	SKIPN PTNUM
	PTYGET PTNUM
	POPJ P,
	HRLZI 6,4
	PTGETL PTNUM
	ORM 6,PTNUM+1
	PTSETL PTNUM
	HRRZI 6,5
	HRRZM 6,PTNUM+1
	PTJOBX PTNUM
	POPJ P,
SETON:	SETOM PTOFL
	OUTSTR CRLFD
	POPJ P,
PTEND:	SKIPN PTNUM
	POPJ P,
	PTYREL PTNUM
	SETZM PTNUM
PTOFF:	SETZM PTOFL
	OUTSTR CRLF
	POPJ P,
PTON:	SKIPE PTNUM
	JRST SETON
	POPJ P,
PTCALL:	SKIPN PTNUM
	POPJ P,
	MOVE 6,CALLC
	MOVEM 6,(TS)
PTOUT:	MOVE EN,PTNUM
	PTWRS9 EN
	POPJ P,
SAVIT:	HRRZM 6,FIXFLG
	OUTSTR CRLF
FIXTS:	SUBI TS,2
	SETZ OU,
	SUB P,ONEB
	JRST DOUT

CRFIX:	CAIGE 5,-2(TS)
	POPJ P,
	JRST FIXTS
INDER:	HRRZI 6,.+2
	JRST SAVIT
	MOVEM OU,(EN)
	POPJ P,
LITA:	HRRZI 6,.+2
	JRST SAVIT
	SUB OU,ONEB
	MOVEM OU,(EN)
	POPJ P,
RPLACE:	HRRZI 6,.+2
	JRST SAVIT
	HRR OU,MEM(OU)
	TLZ OU,400000
	TRO OU,400000
	MOVEM OU,(EN)
	POPJ P,
ADER:	HRRZI 6,.+2
	JRST SAVIT
	MOVE 4,MEM-1(OU)
	MOVEM 4,2(TS)
	CAIE TS,1(OU)
	JRST OLD1
	SUBI TS,2
	MOVE OU,(OU)
OLD1:	MOVEM OU,3(TS)
	MOVE 5,(EN)
	MOVE 4,MEM-1(5)
	MOVEM 4,(TS)
	MOVEM 5,1(TS)
	HRRZI OU,-MEM+2(TS)
	HRLI OU,400000-MEM(TS)
	MOVEM OU,4(TS)
	AOBJP OU,
	MOVEM OU,5(TS)
	HRRZI OU,-MEM+5(TS)
	HRLI OU,400000(OU)
	MOVEM OU,(EN)
	ADDI TS,6
	POPJ P,
TABL:	REPEAT 15,{JFCL↔}
	PUSHJ P,CRFIX
	REPEAT 24,{JFCL↔}
	PUSHJ P,STLIT
	REPEAT 11,{JFCL↔}
	PUSHJ P,PTOFF
	JFCL
	PUSHJ P,PTON
	REPEAT 13,{JFCL↔}
	PUSHJ P,INDER
	REPEAT 4,{JFCL↔}
	JSR $I
	JFCL
	PUSHJ P,ADER
	JFCL
	PUSHJ P,PTCALL
	REPEAT 2,{JFCL↔}
	PUSHJ P,FILIN
	REPEAT 4,{JFCL↔}
	PUSHJ P,PTEND
	PUSHJ P,LITA
	JFCL
	SETZM SAVFLG
	PUSHJ P,FILO
	PUSHJ P,PTBEG
	JFCL
	PUSHJ P,RPLACE
	SETOM SAVFLG
	REPEAT 53,{JFCL↔}
POPS:	POPJ P,	↔ PDPO:	IOWD 100,PDL
PDL:	BLOCK 100    ↔	PTOFL:	0
IPC:	21000,,20000 ↔	0 ↔	PPN: 	'CMSLCS'
DEVN:	17	     ↔	SIXBIT/DSK/ ↔	0
IFNAM:	SIXBIT/ALY/  ↔	SIXBIT/OOP/ ↔	BLOCK 2
OFNAM:	SIXBIT/LAST/  ↔	SIXBIT/OOP/ ↔	BLOCK 2
INPO:	IOWD 200,MEM ↔	QMARK:	45767706424
CRLF:	64240,,0     ↔	ASTR:	ASCIZ/*/
SPACE:	ASCIZ/ /     ↔	CALLC:	600600,,0
CRLFD:	64245,,600000 ↔	FIXFLG:	-1
TMP:	0    ↔	SAVFLG:	-1
LITFLG:	-1   ↔	LITCHR:	LITCK
ONEB:	1,,1 ↔	TWOB:	2,,2
RETRN:	LOOP+2 ↔ PATCH:	BLOCK 100
PTNUM:	0    ↔	BLOCK 400
	END INT